# 基础镜像
FROM eclipse-temurin:17-jre
# 维护者信息
LABEL maintainer="hello"

# 定义构建参数，可在构建时传入
ARG PROFILES=prod
ARG NACOS_SERVER=47.120.9.38:8848
ARG SERVER_PORT=8080
# 添加 Nacos 命名空间参数
ARG NACOS_CONFIG_NAMESPACE=prod 
ARG NACOS_DISCOVERY_NAMESPACE=prod
ARG APP_NAME=hello-auth
ARG JAR_FILE=./jar/hello-auth.jar # Corrected path
ARG WORK_DIR=/home/hello

# 定义环境变量
ENV APP_NAME=${APP_NAME} \
    APP_HOME=${WORK_DIR} \
    PROFILES=${PROFILES} \
    NACOS_SERVER=${NACOS_SERVER} \
    # 将命名空间参数设置到环境变量
    NACOS_CONFIG_NAMESPACE=${NACOS_CONFIG_NAMESPACE} \
    NACOS_DISCOVERY_NAMESPACE=${NACOS_DISCOVERY_NAMESPACE} \
    SERVER_PORT=${SERVER_PORT}

# 挂载目录
VOLUME ${APP_HOME}
# 创建目录
RUN mkdir -p ${APP_HOME}
# 指定路径
WORKDIR ${APP_HOME}
# 复制jar文件到路径
COPY ${JAR_FILE} ${APP_HOME}/app.jar

# 暴露端口
EXPOSE ${SERVER_PORT}

# 使用shell格式的ENTRYPOINT以支持变量替换
ENTRYPOINT java \
           -Dspring.profiles.active=${PROFILES} \
           -Dspring.cloud.nacos.discovery.server-addr=${NACOS_SERVER} \
           -Dspring.cloud.nacos.config.server-addr=${NACOS_SERVER} \
           -Dspring.cloud.nacos.config.namespace=${NACOS_CONFIG_NAMESPACE} \
           -Dspring.cloud.nacos.discovery.namespace=${NACOS_DISCOVERY_NAMESPACE} \
           -Dserver.port=${SERVER_PORT} \
           -jar app.jar